웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > sql

[SQL] 문자 바꾸기, 치환, 변환 replace()

Last Modified : 2020-03-12 / Created : 2015-04-30
13,899
View Count

데이터베이스에 저장된 값을 업데이트 하는 경우를 생각해보겠습니다. 만약 똑값은 패턴으로 저장된 텍스트를 한꺼번에 바꾸어 데이터베이스에 저장할 경우 어떻게 해야할까요? 서버로 데이터를 불러온 뒤에 다시 변경한 후 값을 저장할 수 있겠지만 매우 번거롭습니다. 만약 쿼리 안에서 replace() 함수를 사용할 수 있다면 좋겠죠.

다행하게도 쿼리에 replace()를 사용할 수 있습니다. 특정한 텍스트가 반복될 경우 replace() 함수를 사용해 수정할 데이터의 값을 원하는 다른 문자로 변경하는 방법에 대하여 알아보겠습니다.



! sql에서 replace() 함수 사용방법


* 테이블 이름: employee
===========================
     dept     ||                 tel
===========================
     hr          ||               8282
----------------------------------------------
     sales    ||               1254
----------------------------------------------
      hr          ||               8282
===========================

위 테이블의 부서명 dept가 hr(인사팀)을 찾아 전화번호를 모두 1004로 바꾸려합니다. 아래는 쿼리 코드입니다 

<?php
   $num = "1004";
   $query = "UPDATE employee SET tel='$num' WHERE dept='hr' LIMIT 10;"

// tel의 값을 모두 1004로 변경함
?>

위 코드는 변경을 하기 이전 즉, replace() 함수를 사용하기 이전의 코드입니다. 이 코드를 사용하면 부서명 hr을 찾아 tel 컬럼의 값을 1004로 모두 변경할 것입니다.

만약 tel의 값이 1004가 아닌 경우가 존재하고 1003인 경우도 있다면?? 그리고 1003은 1004로 바꾸어 저장하려면 어떻게 할까요? 즉1003의 값은 변경해야 하므로 1003을 1004로 바꿔야 할 것입니다. 이 경우에 replace() 함수를 사용해 일괄적으로 변경이 가능할 것입니다. 이 예제는 변경할 값이 이처럼 변수를 사용하고 바뀔 수 있는 경우를 예로 들고 있습니다. 

<?php
$query = "UPDATE employee SET tel=replace('$num', '1003', '1004') WHERE test='123' LIMIT 10";

// tel의 값을 1004로 변경함
?>

보시는 것처럼 replace() 함수를 사용해 간단하게 저장할 값을 일괄적으로 변경할 수 있게되었습니다. 참고로 SQL에서도 정규표현식을 사용할 수 있습니다.

Previous

[SQL] 한글 초성, 자음 검색기능 구현하기

Previous

[sql] 인덱스(indexes) 테이블이란? 간단하게 설정하는 방법